CC=gcc
LD=ld
AS=as
CFLAGS=-m32 -ffreestanding -O2 -Wall -Wextra

all: kernel.bin

# 链接内核
kernel.bin: boot.o kernel.o serial.o keyboard.o linker.ld
	$(LD) -m elf_i386 -T linker.ld -o kernel.bin boot.o kernel.o serial.o keyboard.o

# 汇编启动文件
boot.o: boot.s
	$(AS) --32 boot.s -o boot.o

# C 文件编译
kernel.o: kernel.c
	$(CC) $(CFLAGS) -c kernel.c -o kernel.o

serial.o: serial.c
	$(CC) $(CFLAGS) -c serial.c -o serial.o

keyboard.o: keyboard.c
	$(CC) $(CFLAGS) -c keyboard.c -o keyboard.o

# 在 QEMU 上运行（SSH 下可输入）
run: kernel.bin
	qemu-system-i386 -kernel kernel.bin -display none -serial telnet:127.0.0.1:1234,server,nowait

# 清理中间文件
clean:
	rm -f *.o kernel.bin
